package org.rcy.ruicingmarket.file.store;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.UUID;

public class QiNiuYunFileUpLoadUtil {
    public  static String upLoadFile(byte[] uploadBytes,String fileName)
    {

        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.region0());//region0表示华东存储区
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证，然后准备上传
        String accessKey = "fEw6-GWFbII0boLfcxs8cokl1UUBbLKdnN1wuk5n";
        String secretKey = "BkVO4gEmPcdWuMgiwwleld_iVbZOjGq1pwGRFxD2";
        String bucket = "rcystock";
        //默认不指定key的情况下，以文件内容的hash值作为文件名
        String key = fileName;

        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        try {
            Response response = uploadManager.put(uploadBytes, key, upToken);//key就是保存至七牛的文件名

            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//            System.out.println(putRet.key);输出当前上传的文件名
//            System.out.println(putRet.hash);
            return putRet.key;
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
    return null;
    }
    public static byte[] getUpLoadBytes(FileInputStream fis) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        int len;
        byte[] buffer = new byte[1024];
        while ((len = fis.read(buffer)) != -1) {
            baos.write(buffer, 0, len);
        }
     return baos.toByteArray();
    }
    public static String getUploadFileName(String orginFileName)
    {
        int lastindex = orginFileName.lastIndexOf(".");
        String suffx = orginFileName.substring(lastindex);
        String uploadfilename = UUID.randomUUID().toString() + suffx;
        return uploadfilename;
    }
}
